package com.hh.storeLogo.service.impl;

import com.hh.storeLogo.bean.StoreLogo;
import com.hh.storeLogo.mapper.StoreLogoMapper;
import com.hh.storeLogo.service.StoreLogoService;
import com.hh.storeLogo.vo.StoreLogoAddVo;
import com.hh.storeLogo.vo.StoreLogoUpdateStatusVo;
import com.hh.storeLogo.vo.StoreLogoUpdateVo;
import com.hh.storeLogo.vo.StoreLogoVo;
import com.hh.utils.PageVo;
import com.hh.utils.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StoreLogoServiceImpl implements StoreLogoService {

    @Autowired
    private StoreLogoMapper storeLogoMapper;

    //查询分页
    @Override
    public ResultVo queryPage(StoreLogoVo storeLogoVo) {
        //计算分页第一个参数
        Integer start = (storeLogoVo.getPageIndex()-1)* storeLogoVo.getPageIndex();
        storeLogoVo.setStart(start);
        //查询页面显示的数据
        List<StoreLogo> storeLogoList = storeLogoMapper.getStoreLogoByPage(storeLogoVo);
        //计算总条数
        Integer totalSize = storeLogoMapper.getTotalSize();
        //计算总页数
        Integer totalPage = (totalSize/ storeLogoVo.getPageSize() == 0 ? totalSize % storeLogoVo.getPageSize():totalSize % storeLogoVo.getPageSize()+1);
        //将数据放到对象中
        PageVo<StoreLogo> pageVo = new PageVo<>();
        pageVo.setTotalPage(totalPage);
        pageVo.setTotalNumber(totalSize);
        pageVo.setDataList(storeLogoList);
        return ResultVo.success(pageVo);
    }

    //新增
    @Override
    public ResultVo add(StoreLogoAddVo storeLogoAddVo) {
        //判断库房标识的编码是否唯一
        Integer codeCount = storeLogoMapper.getCountByCode(storeLogoAddVo.getCode());
        if (codeCount>0){
            //如果编码不唯一,提示错误信息
            return ResultVo.error("库房标识编码重复,请从新输入");
        }
        //判断库房标识的名称是否唯一
        Integer nameCount = storeLogoMapper.getCountByName(storeLogoAddVo.getName());
        if (nameCount>0){
            //如果名称不唯一,提示错误信息
            return ResultVo.error("库房标识名称重复,请从新输入");
        }
        storeLogoMapper.add(storeLogoAddVo);
        return ResultVo.success("添加成功");
    }

    //修改
    @Override
    public ResultVo update(StoreLogoUpdateVo storeLogoUpdateVo) {
        //判断当前操作数据是否为启用状态
        Boolean status = storeLogoMapper.checkStatus(storeLogoUpdateVo.getCode());
        if (status){
            return ResultVo.error("当前数据为启用状态,不允许操作");
        }
        //判断库房标识的名称是否唯一
        Integer nameCount = storeLogoMapper.getCountByName2(storeLogoUpdateVo);
        if (nameCount>0){
            //如果名称不唯一,提示错误信息
            return ResultVo.error("库房标识名称重复,请从新输入");
        }
        storeLogoMapper.update(storeLogoUpdateVo);
        return ResultVo.success("修改成功");
    }

    //修改状态
    @Override
    public ResultVo updateStatus(StoreLogoUpdateStatusVo storeLogeUpdateStatusVo) {
        storeLogoMapper.updateStatus(storeLogeUpdateStatusVo);
        return ResultVo.success("状态修改成功");
    }

    @Override
    public ResultVo logo() {
        List<StoreLogo> logoList = storeLogoMapper.logo();
        return ResultVo.success(logoList);
    }


}
